\section{Implémentation}

	%% Nos choix d'implémentation etc...
%	La structure thread ayant été définie précédemment, voici quelques spécificité de l'implémentation choisie.

	\subsection{Un indicateur du thread principal}
	
		Comme la fonction \verb?main()? d'un programme doit \^etre traitée de façon équivalente à celle d'un thread, nous avons choisi d'utiliser une variable globale contenant le contexte de cette fonction particulière. Pour identifier si l'on se trouve dans cette fonction, nous avons utilisé un booléen permettant de savoir si on se trouve dans le \verb?main()? ou non.
	
	\subsection{Utilisation des listes}
		
		La bibliothèque que nous développons est organisée autour de deux listes : la \textbf{runQueue} et la \textbf{endQueue}. La \textbf{runQueue} correspond à la liste des thread créés et qui peuvent \^etre accessible à l'ordonnanceur pour le prochain changement de contexte. Elle contient donc uniquement les threads qui n'ont pas terminé leur exécution.\\
		
		La \textbf{endQueue} quant à elle permet de stocker les threads ayant fini leur exécution, voués à \^etre détruit.
		
	
	\subsection{Modularité de l'ordonnanceur}
	
		L'ordonnancement s'effectue actuellement dans la fonction \verb?thread_yield()?, dans le futur, il ne restera dans cette fonction que l'appel à une fonction d'ordonnancement qui sera définie par l'utilisateur ( via éventuellement une fonction d'initialisation ). Les différents types d'ordonnancement seront disponibles à part dans un autre fichier afin de conserver la modularité du code. 	
	
